package cn.tedu.oop3;
/**多态的入门案例
 * 1.多态的前提:继承+重写
 * 2.父类对象不能使用子类的特有功能
 * 3.口诀1:父类引用指向子类对象
 *       解释:创建出来的子类对象的地址值,交给父类类型的引用变量来保存
 *   口诀2:编译看左边,运行看右边
 *       解释:必须要在父类中定义这个方法,材料通过编译,把多态对象看做是父类类型
 *           必须要在子类中重写这个方法,才能满足多态,实际干活的是子类*/
public class TestDemo {
    public static void main(String[] args) {
        Animal a=new Animal();
        Cat c=new Cat();
        Dog d=new Dog();
        a.eat();
        c.eat();
        d.eat();
        c.jump();
        d.run();

        Animal a2=new Cat();
        Animal a3=new Dog();

        System.out.println(a2);
        System.out.println(a3);


    }

}
class Animal{
    public void eat (){
        System.out.println("小动物Animal吃什么都行");
    }
}
class Cat extends Animal{
    public void eat (){ System.out.println("小猫爱吃小鱼干"); }
    public void jump(){ System.out.println("小猫cat跳得老高了"); }
}
class Dog extends Animal{
    public void eat (){ System.out.println("小狗爱吃肉骨头"); }
    public void run(){ System.out.println("小狗dog跑得老快了"); }

}